"""
RSA加密算法实例 --前程贷接口登录
登录接口
* 请求方式：POST
* 接口地址：http://api.lemonban.com:8788/futureloan/member/login
* 请求头：
    * "X-Lemonban-Media-Type","lemonban.v3"
    * "Content-Type","application/json"
* 请求体参数：{"mobile_phone": "13323231111","pwd": "12345678"}

充值接口
* 请求方式：POST
* 接口地址：http://api.lemonban.com:8788/futureloan/member/recharge
* 请求头：
    * "X-Lemonban-Media-Type","lemonban.v3"
    * "Content-Type","application/json"
    * "Authorization","Bearer token" （从登录接口拿到token，特别注意：Bearer前缀与token之间有空格）
* 请求体参数：{"member_id": XXX,"amount": 10000.0,"timestamp": XXX,"sign": "XXX"}

鉴权规则： timestamp+token+sign 方式
1. 设置 Authorization 请求头，值为 Bearer token 值
2. 请求体 json 设置 timestamp 参数，值为当前秒级时间戳
    * 时间戳用来在计算机中记录时间的数值（从1970-1-1，0-0-0）总共经过了多少秒数，方便计算机处理
    * 在线时间戳网站：https://tool.lu/timestamp/
3.请求体 json 设置 sign 参数（签名）：取token字段前50位再拼接上timestamp值，然后通过RSA公钥加密得到的字符串

"""
# 登录接口
import time
import requests
from jsonpath import jsonpath
from d4_RAS加密算法封装 import encrypt_rsa

url = "http://api.lemonban.com:8788/futureloan/member/login"
meth = "post"
param = {"mobile_phone": "13323231111","pwd": "12345678"}
header = {"X-Lemonban-Media-Type":"lemonban.v3","Content-Type":"application/json"}
resp = requests.request(method=meth,url=url,headers=header,json=param)
# print(resp.json())
# 提取token --jsonpath提取 member_id  和 token
token = jsonpath(resp.json(),"$..token")[0]
member_id = jsonpath(resp.json(),"$..id")[0]
print(token,member_id)

# 充值接口 --登录之后的接口 需要鉴权。
url = "http://api.lemonban.com:8788/futureloan/member/recharge"
meth = "post"
header = {"X-Lemonban-Media-Type":"lemonban.v3","Authorization":f"Bearer {token}"}
# 获取秒级的时间戳
timestamp = int(time.time())
# 取token字段前50位 --字符串切片实现
token_sub = token[0:50]
# 拼接上timestamp值
data = f"{token_sub}{timestamp}"
print(data)
# 通过RSA公钥加密得到的字符串--sign
sign = encrypt_rsa(data,"rsa_public_key.pem")
print(sign)

param = {"member_id": member_id,"amount": 1000.0,"timestamp": timestamp,"sign": sign}
resp = requests.request(method=meth,url=url,headers=header,json=param)
print(resp.json())